Repository navigation
feat: recover incomplete signed application versions - #456
Conversation
Code Coverage OverviewLanguages: Go, C# Go / code-coverage/testThe overall line coverage in commit 445da55 in the C# / code-coverage/dotnetThe overall line coverage in commit 445da55 in the Updated |
Current head: RED: paired recovery was absent; the new workflow regression failed before implementation. GREEN: the actual helper passes missing/matching/partial releases, both signature failures, authentication/partial/forbidden/redirect/mixed absence reads, both conflicts, failed readbacks, interrupted writes and idempotent retries. The workflow-order simulator also executes refusal before legacy writes when either prerequisite is disabled. Required native CI completed successfully at this head. Its native registry step observed real Cosign claim acceptance and rejection, real Flux recovery, and real Buildx recovery of a single-platform image without changing its digest. Either partial pair recovered; matching retries and every refusal produced no manifest PUTs; contradictory claims on the second signature were rejected; both latest aliases retained their original bytes. Correctness/security and simplification self-review completed. Its two native-proof findings were fixed: count every manifest PUT and independently exercise the second signature. The local-key fixture proves cryptographic claims and registry behavior; production OIDC identity remains covered by the workflow and command contracts. Unrelated registry writers cannot be fenced by a cross-repository transaction; that limitation is documented. |
@coderabbitai full review |
✅ Action performedFull review finished. |
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configuration
📒 Files selected for processing (8)
Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review. 📜 Recent review details🧰 Additional context used📓 Path-based instructions (2)Source excerpt: Every `.github/tests/test-*.sh` is a test entrypoint and must have an explicit invocation in a `ci.yaml` step's `run:` block.📄 CodeRabbit inference engine (AGENTS.md) Files:
Source excerpt: Repo-specific watch-list for the daily engineer: **Agent-file freshness.**📄 CodeRabbit inference engine (AGENTS.md) Files:
🧠 Learnings (1)📓 Common learnings🪛 LanguageToolAGENTS.md[uncategorized] ~483-~483: The official name of this software platform is spelled with a capital “H”. (GITHUB) 🔇 Additional comments (8)
📝 WalkthroughWalkthroughThe application publishing workflow adds a default-off recovery path that requires signed promotion and caller pinning. The recovery helper verifies both original signatures and their publication claims, reads both version aliases before writing, and restores only missing aliases from the authenticated digests. Tests cover recovery admission, registry states, interruptions, retries, and paired application artifacts. Documentation describes the recovery inputs and registry write limitations. Priority: ➖ Normal Severity of issue fixed: Medium Merge Risk: ⚪ Minimal · up to Recovery checks both version aliases after writing. No actionable issue remains identified before merge. Security Architecture ReviewSecurity architecture risk: 🔵 Low · up to Recovery is opt-in and authenticates both original artifacts before restoring version tags. Conflicting or ambiguous observations stop recovery, and latest tags are preserved. Remaining uncertainty concerns concurrent writers and production registry permissions, not a verified new vulnerability. Retained concerns Security review detailsSecurity Blast Radius
Security Findings and Attack Paths
Trust Boundaries and Controls
Resilience and Maintainability Implications
Hardening Proposals
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 8.33% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 12 functions across 4 files. (4 skipped: 4 unsupported.)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Reviewed CodeRabbit's complete current-head review 5985957654, including its ancillary output, at The 8.33% docstring warning is a generic coverage metric applied to Bash fixture helpers. These functions have no language docstring interface: their contract is expressed by descriptive names, file headers, inline parameter comments and the executable scenario assertions. The production helper documents paired authentication, admission and the non-transactional write boundary; the operator documentation supplies all recovery inputs and limitations. Inspection found no missing behavior explanation that this warning identifies, so adding artificial docstring blocks would not improve the documented contract. The language-name warning matches the literal The review processed all eight changed files and explicitly reported no actionable comments at this head. All 268 check contexts have settled (173 successful, 95 intentional skips), including the successful required aggregate and real registry recovery exercises. There are no review threads, no competing branch activity, and the current base is clean. The runtime evaluation is recorded in 5985878505. |
Why
An interrupted application release can leave its image and deployment package incomplete, while a normal retry correctly refuses to overwrite an existing version.
What
Add an opt-in recovery that authenticates the original pair and restores only missing version tags. Matching retries make no changes, and conflicting releases are refused.
Fixes #455